main() {
  // slice(1, 5);
  // slice(1, null);
  slice2(1);
  slice2(1, 5);
  slice3(1, step: 3, end: 10);
}

//必传参数
int add(int a, int b) {
  return a + b;
}

// 可选参数经典错误 int? 等价于 int|null
void slice(int start, int? end) {
  print("切片开始索引$start,切片结束索引$end");
}

//可选位置参数
void slice2(int start, [int? end]) {
  print("切片开始索引$start,切片结束索引$end");
}

//可选命名参数
void slice3(int start, {int? end, int? step}) {
  print("切片开始索引$start,切片结束索引$end,切片步长$step");
}
